package projetofinal.webservice;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import projetofinal.controle.Login;
import projetofinal.modelo.AvaliacaoComentario;
import projetofinal.modelo.AvaliacaoLugar;
import projetofinal.modelo.AvaliacaoUnidade;
import projetofinal.modelo.Comentario;
import projetofinal.modelo.Dicionario;
import projetofinal.modelo.Lugar;
import projetofinal.modelo.Unidade;
import projetofinal.modelo.Usuario;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;


public class REST {

        private static final String URL_WS = "http://146.164.250.138:8080/WebServiceREST/projetoFinal/";
        //private static final String URL_WS = "http://192.168.0.100:8080/WebServiceREST/projetoFinal/";
        //private static final String URL_WS = "http://192.168.1.100:8080/WebServiceREST/projetoFinal/";
        //private static final String URL_WS = "http://192.168.1.144:8080/WebServiceREST/projetoFinal/";

        
        /*****************************************************************/
        /*****************			UNIDADES            **********************/
        /*****************************************************************/
        
        
        public String atualizarUnidade(Unidade unidade) throws Exception{
                Gson gson = new Gson();
                String clienteJSON = gson.toJson(unidade);
                
                String[] resposta = new WebService().post(URL_WS + "atualizarUnidade", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Unidade> listarUnidadesAtualizadas(String data) throws Exception {
                data = data.replace(" ", "_");
                String[] resposta = new WebService().get(URL_WS + "listarUnidadesAtualizadas/"+data+"/"+Login.idCentroAtual);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Unidade> listaUnidades = new ArrayList<Unidade>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaUnidades.add(gson.fromJson(array.get(i), Unidade.class));
                        }
                        return listaUnidades;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        
        /*************************************************************/
        /*****************                      LUGARES         **********************/
        /*************************************************************/

        
        public Lugar getLugar(int id) throws Exception {

                String[] resposta = new WebService().get(URL_WS + "lugar/id/" + id);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        Lugar lugar = gson.fromJson(resposta[1], Lugar.class);
                        return lugar;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Lugar> listarLugares() throws Exception {
                String[] resposta = new WebService().get(URL_WS + "listarLugares/"+Login.idCentroAtual);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Lugar> listaLugares = new ArrayList<Lugar>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaLugares.add(gson.fromJson(array.get(i), Lugar.class));
                        }
                        return listaLugares;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Lugar> listarMeusLugares() throws Exception {

                String[] resposta = new WebService().get(URL_WS + "listarMeusLugares/"+Login.idUsuario);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Lugar> listaMeusLugares = new ArrayList<Lugar>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaMeusLugares.add(gson.fromJson(array.get(i), Lugar.class));
                        }
                        return listaMeusLugares;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }

        public int inserirLugar(Lugar lugar) throws Exception {
                
                int id = 0;
                Gson gson = new Gson();
                String clienteJSON = gson.toJson(lugar);
                
                String[] resposta = new WebService().post(URL_WS + "inserirLugar", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        id = gson.fromJson(resposta[1], Integer.class);
                } else {
                        throw new Exception(resposta[1]);
                }
                return id;      
        }
        
        public String atualizarLugar(Lugar lugar) throws Exception{
                Gson gson = new Gson();
                String clienteJSON = gson.toJson(lugar);
                
                String[] resposta = new WebService().post(URL_WS + "atualizarLugar", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
        }

        public Lugar buscarLugar(String nomeLugar) throws Exception{
                nomeLugar = nomeLugar.replace(" ", "_");
                String[] resposta = new WebService().get(URL_WS + "lugar/nome/" + nomeLugar);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        Lugar lugar = gson.fromJson(resposta[1], Lugar.class);
                        return lugar;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public Lugar buscarLugar(long idLugar) throws Exception{
                String[] resposta = new WebService().get(URL_WS + "lugar/id/" + idLugar);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        Lugar lugar = gson.fromJson(resposta[1], Lugar.class);
                        return lugar;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public String deletarLugar(long id) throws Exception {
                
                String[] resposta = new WebService().get(URL_WS + "deletarLugar/" + id);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Lugar> buscarLugaresPorNome(String nome, String nomeTipo, long idUnidade) throws Exception {
                if (nome.equals("")) nome=" ";
                nome = nome.replace(" ", "_");
                nomeTipo = nomeTipo.replace(" ", "_");
                String[] resposta = new WebService().get(URL_WS + "buscarLugaresPorNome/" + nome +"/"+nomeTipo+"/"+idUnidade);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Lugar> listaLugares = new ArrayList<Lugar>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaLugares.add(gson.fromJson(array.get(i), Lugar.class));
                        }
                        return listaLugares;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Lugar> buscarMeusLugaresPorNome(String nome, String nomeTipo) throws Exception {
                if (nome.equals("")) nome=" ";
                nome = nome.replace(" ", "_");
                nomeTipo = nomeTipo.replace(" ", "_");
                
                String[] resposta = new WebService().get(URL_WS + "buscarMeusLugaresPorNome/" + nome +"/"+nomeTipo+"/"+Login.idUsuario);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Lugar> listaLugares = new ArrayList<Lugar>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaLugares.add(gson.fromJson(array.get(i), Lugar.class));
                        }
                        return listaLugares;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Lugar> listarLugaresNaoSincronizados(String data) throws Exception {
                data = data.replace(" ", "_");
                String[] resposta = new WebService().get(URL_WS + "listarLugaresNaoSincronizados/"+data+"/"+Login.idCentroAtual);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Lugar> listaLugares = new ArrayList<Lugar>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaLugares.add(gson.fromJson(array.get(i), Lugar.class));
                        }
                        return listaLugares;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        
        /********************************************************************/
        /*****************                      COMENTARIOS                     **********************/
        /********************************************************************/
        
        
        public Comentario getComentario(int id) throws Exception {

                String[] resposta = new WebService().get(URL_WS + "comentario/" + id);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        Comentario comentario = gson.fromJson(resposta[1], Comentario.class);
                        return comentario;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public Comentario buscarComentario(long id) throws Exception{
                String[] resposta = new WebService().get(URL_WS + "comentario/id/" + id);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        Comentario comentario = gson.fromJson(resposta[1], Comentario.class);
                        return comentario;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Comentario> buscarComentariosPorTitulo(String titulo, long id_unidade, long id_lugar) throws Exception {
                titulo = titulo.replace(" ", "_");
                String[] resposta = new WebService().get(URL_WS + "buscarComentariosPorTitulo/" + id_unidade + "/" + id_lugar + "/" + titulo);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Comentario> listaComentarios = new ArrayList<Comentario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaComentarios.add(gson.fromJson(array.get(i), Comentario.class));
                        }
                        return listaComentarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Comentario> getListaComentario() throws Exception {

                String[] resposta = new WebService().get(URL_WS + "buscarComentarios");
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Comentario> listaComentarios = new ArrayList<Comentario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaComentarios.add(gson.fromJson(array.get(i), Comentario.class));
                        }
                        return listaComentarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Comentario> listarComentariosParaDicionario() throws Exception {

                String[] resposta = new WebService().get(URL_WS + "listarComentariosParaDicionario");
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Comentario> listaComentarios = new ArrayList<Comentario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaComentarios.add(gson.fromJson(array.get(i), Comentario.class));
                        }
                        return listaComentarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Comentario> listarComentarios(long id_unidade, long id_lugar, long id_centro) throws Exception {
        	
        	String[] resposta = new WebService().get(URL_WS + "listarComentarios/"+id_unidade+"/"+id_lugar+"/"+id_centro);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Comentario> listaComentarios = new ArrayList<Comentario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaComentarios.add(gson.fromJson(array.get(i), Comentario.class));
                        }
                        return listaComentarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }

        public List<Comentario> buscarTopicos(long id_unidade, long id_lugar, String parametro) throws Exception {
                parametro = parametro.replace("%", "*");
                parametro = parametro.replace(" ", "_");
                
                String[] resposta = new WebService().get(URL_WS + "buscarTopicos/"+id_unidade+"/"+id_lugar+"/"+parametro);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Comentario> listaComentarios = new ArrayList<Comentario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaComentarios.add(gson.fromJson(array.get(i), Comentario.class));
                        }
                        return listaComentarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public int inserirComentario(Comentario comentario) throws Exception {
                
                Gson gson = new Gson();
                String clienteJSON = gson.toJson(comentario);
                int id = 0;
                
                String[] resposta = new WebService().post(URL_WS + "inserirComentario", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        id = gson.fromJson(resposta[1], Integer.class);
                } else {
                        throw new Exception(resposta[1]);
                }
                return id;
        }
        
        public int quantidade_topicos(long idUnidade, long idLugar) throws Exception{
                String[] resposta = new WebService().get(URL_WS + "quantidade_topicos/" + idUnidade + "/" + idLugar);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        int quantidade = gson.fromJson(resposta[1], Integer.class); 
                        return quantidade;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public int quantidade_comentarios_por_titulo(String titulo, long idUnidade, long idLugar) throws Exception{
                titulo = titulo.replace(" ", "_");
                
                String[] resposta = new WebService().get(URL_WS + "quantidade_comentarios_por_titulo/" + idUnidade + "/" + idLugar + "/" + titulo);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        int quantidade = gson.fromJson(resposta[1], Integer.class); 
                        return quantidade;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Comentario> listarMeusComentarios() throws Exception {

                String[] resposta = new WebService().get(URL_WS + "listarMeusComentarios/"+Login.idUsuario);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Comentario> listaMeusComentarios = new ArrayList<Comentario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaMeusComentarios.add(gson.fromJson(array.get(i), Comentario.class));
                        }
                        return listaMeusComentarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public String atualizarComentario(Comentario comentario) throws Exception{
                Gson gson = new Gson();
                String clienteJSON = gson.toJson(comentario);
                
                String[] resposta = new WebService().post(URL_WS + "atualizarComentario", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public String deletarComentario(long id) {
                
                String[] resposta = new WebService().get(URL_WS + "deletarComentario/" + id);
                return resposta[1];
        }
        
        public void enviarMidia(String nomeMidia, String caminhoMidia){
                
                WebService wb = new WebService();
                try {
                        wb.postMidia(URL_WS + "enviarMidia/", nomeMidia, caminhoMidia);
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
        
        public File pegarMidia(String nomeMidia){
                
                WebService wb = new WebService();
                File file = new File("");
                try {
                        file = wb.getMidia(URL_WS + "getMidia/"+nomeMidia, nomeMidia);
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                return file;
        }
        
        public List<Comentario> listarComentariosNaoSincronizados(String data) throws Exception {
                data = data.replace(" ", "_");
                String[] resposta = new WebService().get(URL_WS + "listarComentariosNaoSincronizados/"+data+"/"+Login.idCentroAtual);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Comentario> listaComentarios = new ArrayList<Comentario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaComentarios.add(gson.fromJson(array.get(i), Comentario.class));
                        }
                        return listaComentarios;
                        
                }else {
                        throw new Exception(resposta[1]);
                }
        }
        
        
        /*************************************************************/
        /*****************               USUARIOS               **********************/
        /*************************************************************/
        
        
        public Usuario getUsuario(long id) throws Exception {

                String[] resposta = new WebService().get(URL_WS + "usuario/id/" + id);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        Usuario usuario = gson.fromJson(resposta[1], Usuario.class);
                        return usuario;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public Usuario getUsuario(String login) throws Exception {

                String[] resposta = new WebService().get(URL_WS + "usuario/login/" + login);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        Usuario usuario = gson.fromJson(resposta[1], Usuario.class);
                        return usuario;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public int autentica_usuario(String login, String senha) throws Exception {

                String[] resposta = new WebService().get(URL_WS + "autentica_usuario/" + login + "/" + senha);
                                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        int quantidade = gson.fromJson(resposta[1], Integer.class);
                        return quantidade;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Usuario> getListaUsuario() throws Exception {

                String[] resposta = new WebService().get(URL_WS + "buscarUsuarios");
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Usuario> listaUsuarios = new ArrayList<Usuario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaUsuarios.add(gson.fromJson(array.get(i), Usuario.class));
                        }
                        return listaUsuarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }

        public int inserirUsuario(Usuario usuario) throws Exception {
                
                Gson gson = new Gson();
                int id = 0;
                String clienteJSON = gson.toJson(usuario);
                
                String[] resposta = new WebService().post(URL_WS + "inserirUsuario", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        id = gson.fromJson(resposta[1], Integer.class);
                } else {
                        throw new Exception(resposta[1]);
                }
                return id;              
        }
        
        public String atualizarUsuario(Usuario usuario) throws Exception {
                
                Gson gson = new Gson();
                String clienteJSON = gson.toJson(usuario);
                
                String[] resposta = new WebService().post(URL_WS + "atualizarUsuario", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
                
        }
        
        public String deletarUsuario(int id) {
                
                String[] resposta = new WebService().get(URL_WS + "deletarUsuario/" + id);
                return resposta[1];
        }
        
        public List<Usuario> listarUsuarios() throws Exception {
                String[] resposta = new WebService().get(URL_WS + "listarUsuarios");
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Usuario> listaUsuarios = new ArrayList<Usuario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaUsuarios.add(gson.fromJson(array.get(i), Usuario.class));
                        }
                        return listaUsuarios;
                        
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Usuario> listarUsuariosNaoSincronizados(String data) throws Exception {
                data = data.replace(" ", "_");
                
                String[] resposta = new WebService().get(URL_WS + "listarUsuariosNaoSincronizados/"+data);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Usuario> listaUsuarios = new ArrayList<Usuario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaUsuarios.add(gson.fromJson(array.get(i), Usuario.class));
                        }
                        return listaUsuarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        /*************************************************************/
        /*****************               AVALIACOES_UNIDADE     **********************/
        /*************************************************************/
        
        
        public String inserirAvaliacaoUnidade(AvaliacaoUnidade avaliacaoUnidade) throws Exception {

                Gson gson = new Gson();
                String clienteJSON = gson.toJson(avaliacaoUnidade);
                
                String[] resposta = new WebService().post(URL_WS + "inserirAvaliacaoUnidade", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public String atualizarAvaliacaoUnidade(AvaliacaoUnidade avaliacaoUnidade) throws Exception {
                
                Gson gson = new Gson();
                String clienteJSON = gson.toJson(avaliacaoUnidade);
                
                String[] resposta = new WebService().post(URL_WS + "atualizarAvaliacaoUnidade", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<AvaliacaoUnidade> listarAvaliacoesUnidade() throws Exception {
            String[] resposta = new WebService().get(URL_WS + "listarAvaliacoesUnidade/"+Login.idCentroAtual);
            
            if (resposta[0].equals("200")) {
                    Gson gson = new Gson();
                    ArrayList<AvaliacaoUnidade> listaAvaliacoes = new ArrayList<AvaliacaoUnidade>();
                    JsonParser parser = new JsonParser();
                JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                
                for (int i = 0; i < array.size(); i++){
                    listaAvaliacoes.add(gson.fromJson(array.get(i), AvaliacaoUnidade.class));
                    }
                    return listaAvaliacoes;
                    
            } else {
                    throw new Exception(resposta[1]);
            }
        }
        
        public List<AvaliacaoUnidade> listarAvaliacoesUnidadeNaoSincronizados(String data) throws Exception {
            data = data.replace(" ", "_");
            String[] resposta = new WebService().get(URL_WS + "listarAvaliacoesUnidadeNaoSincronizados/"+data+"/"+Login.idCentroAtual);
            
            if (resposta[0].equals("200")) {
                    Gson gson = new Gson();
                    ArrayList<AvaliacaoUnidade> listaAvaliacoes = new ArrayList<AvaliacaoUnidade>();
                    JsonParser parser = new JsonParser();
                JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                
                for (int i = 0; i < array.size(); i++){
                    listaAvaliacoes.add(gson.fromJson(array.get(i), AvaliacaoUnidade.class));
                    }
                    return listaAvaliacoes;
                    
            } else {
                    throw new Exception(resposta[1]);
            }
    }
        
        /*************************************************************/
        /*****************               AVALIACOES_LUGAR       **********************/
        /*************************************************************/
        
        
        public String inserirAvaliacaoLugar(AvaliacaoLugar avaliacaoLugar) throws Exception {

                Gson gson = new Gson();
                String clienteJSON = gson.toJson(avaliacaoLugar);
                
                String[] resposta = new WebService().post(URL_WS + "inserirAvaliacaoLugar", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public String atualizarAvaliacaoLugar(AvaliacaoLugar avaliacaoLugar) throws Exception {
                
                Gson gson = new Gson();
                String clienteJSON = gson.toJson(avaliacaoLugar);
                
                String[] resposta = new WebService().post(URL_WS + "atualizarAvaliacaoLugar", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<AvaliacaoLugar> listarAvaliacoesLugar() throws Exception {
            String[] resposta = new WebService().get(URL_WS + "listarAvaliacoesLugar/"+Login.idCentroAtual);
            
            if (resposta[0].equals("200")) {
                    Gson gson = new Gson();
                    ArrayList<AvaliacaoLugar> listaAvaliacoes = new ArrayList<AvaliacaoLugar>();
                    JsonParser parser = new JsonParser();
                JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                
                for (int i = 0; i < array.size(); i++){
                    listaAvaliacoes.add(gson.fromJson(array.get(i), AvaliacaoLugar.class));
                    }
                    return listaAvaliacoes;
                    
            } else {
                    throw new Exception(resposta[1]);
            }
        }
        
        public List<AvaliacaoLugar> listarAvaliacoesLugarNaoSincronizados(String data) throws Exception {
            data = data.replace(" ", "_");
            String[] resposta = new WebService().get(URL_WS + "listarAvaliacoesLugarNaoSincronizados/"+data+"/"+Login.idCentroAtual);
            
            if (resposta[0].equals("200")) {
                    Gson gson = new Gson();
                    ArrayList<AvaliacaoLugar> listaAvaliacoes = new ArrayList<AvaliacaoLugar>();
                    JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                
                for (int i = 0; i < array.size(); i++){
                    listaAvaliacoes.add(gson.fromJson(array.get(i), AvaliacaoLugar.class));
                    }
                    return listaAvaliacoes;
                    
            } else {
                    throw new Exception(resposta[1]);
            }
        }
        
        
        /*************************************************************/
        /*****************               AVALIACOES             **********************/
        /*************************************************************/
        
        
        public String inserirAvaliacao(AvaliacaoComentario avaliacaoComentario) throws Exception {

                Gson gson = new Gson();
                String clienteJSON = gson.toJson(avaliacaoComentario);
                
                String[] resposta = new WebService().post(URL_WS + "inserirAvaliacaoComentario", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public String atualizarAvaliacao(AvaliacaoComentario avaliacaoComentario) throws Exception {
                
                Gson gson = new Gson();
                String clienteJSON = gson.toJson(avaliacaoComentario);
                
                String[] resposta = new WebService().post(URL_WS + "atualizarAvaliacaoComentario", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        return resposta[1];
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public int quantidade_avaliacoes_positivas(long idComentario) throws Exception{
                String[] resposta = new WebService().get(URL_WS + "quantidade_avaliacoes_positivas/" + idComentario);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        int quantidade = gson.fromJson(resposta[1], Integer.class); 
                        return quantidade;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public int quantidade_avaliacoes_negativas(long idComentario) throws Exception{
                String[] resposta = new WebService().get(URL_WS + "quantidade_avaliacoes_negativas/" + idComentario);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        int quantidade = gson.fromJson(resposta[1], Integer.class); 
                        return quantidade;
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public int quantidade_avaliacoes_comentario(long idComentario) throws Exception{
                String[] resposta = new WebService().get(URL_WS + "quantidade_avaliacoes_comentario/" + idComentario);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        int quantidade = gson.fromJson(resposta[1], Integer.class); 
                        return quantidade;
                } else {
                        throw new Exception(resposta[1]);
                }
        }        
        
        public List<AvaliacaoComentario> listarAvaliacoesComentario() throws Exception {
                String[] resposta = new WebService().get(URL_WS + "listarAvaliacoesComentario/"+Login.idCentroAtual);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<AvaliacaoComentario> listaAvaliacoes = new ArrayList<AvaliacaoComentario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaAvaliacoes.add(gson.fromJson(array.get(i), AvaliacaoComentario.class));
                        }
                        return listaAvaliacoes;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<AvaliacaoComentario> listarAvaliacoesComentarioNaoSincronizados(String data) throws Exception {
                data = data.replace(" ", "_");
                String[] resposta = new WebService().get(URL_WS + "listarAvaliacoesComentarioNaoSincronizados/"+data+"/"+Login.idCentroAtual);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<AvaliacaoComentario> listaAvaliacoes = new ArrayList<AvaliacaoComentario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaAvaliacoes.add(gson.fromJson(array.get(i), AvaliacaoComentario.class));
                        }
                        return listaAvaliacoes;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        
        /****************************************************************/
        /*****************               DICIONARIOS            **********************/
        /****************************************************************/
        
        
        public int inserirDicionario(Dicionario dicionario) throws Exception {
                
                Gson gson = new Gson();
                String clienteJSON = gson.toJson(dicionario);
                int id = 0;
                
                String[] resposta = new WebService().post(URL_WS + "inserirDicionario", clienteJSON);
                
                if (resposta[0].equals("200")) {
                        id = gson.fromJson(resposta[1], Integer.class);
                } else {
                        throw new Exception(resposta[1]);
                }
                
                return id;              
        }
        
        public String deletarPalavraChave(long id) {
                
                String[] resposta = new WebService().get(URL_WS + "deletarPalavraChave/" + id);
                return resposta[1];
        }
        
        public List<Comentario> buscarDicionario(String consulta) throws Exception {
                consulta = consulta.replace(" ", "+");
                consulta = consulta.replace("%", "*");
                String[] resposta = new WebService().get(URL_WS + "buscarDicionario/"+consulta);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Comentario> listaComentarios = new ArrayList<Comentario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaComentarios.add(gson.fromJson(array.get(i), Comentario.class));
                        }
                        return listaComentarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Dicionario> buscarPalavraChave(long idComentario) throws Exception {
                String[] resposta = new WebService().get(URL_WS + "buscarPalavraChave/"+idComentario);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Dicionario> listaDicionarios = new ArrayList<Dicionario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaDicionarios.add(gson.fromJson(array.get(i), Dicionario.class));
                        }
                        return listaDicionarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Dicionario> listarDicionarios() throws Exception {
                String[] resposta = new WebService().get(URL_WS + "listarDicionarios/"+Login.idCentroAtual);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Dicionario> listaDicionarios = new ArrayList<Dicionario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaDicionarios.add(gson.fromJson(array.get(i), Dicionario.class));
                        }
                        return listaDicionarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }
        
        public List<Dicionario> listarDicionariosNaoSincronizados(String data) throws Exception {
                data = data.replace(" ", "_");
                String[] resposta = new WebService().get(URL_WS + "listarDicionariosNaoSincronizados/"+data+"/"+Login.idCentroAtual);
                
                if (resposta[0].equals("200")) {
                        Gson gson = new Gson();
                        ArrayList<Dicionario> listaDicionarios = new ArrayList<Dicionario>();
                        JsonParser parser = new JsonParser();
                    JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
                    
                    for (int i = 0; i < array.size(); i++){
                        listaDicionarios.add(gson.fromJson(array.get(i), Dicionario.class));
                        }
                        return listaDicionarios;
                        
                } else {
                        throw new Exception(resposta[1]);
                }
        }

}